import React from "react";
import { useLocation, Navigate } from "react-router-dom";

// 高阶组件： 是一个函数， 接受一个组件作为参数， 返回值是 一个组件；
const withLogin = (Comp) => {
  return () => {
    const token = localStorage.getItem("token");
    const { pathname } = useLocation();

    if (token) {
      // 已登录
      if (pathname === "/login") {
        // 已登录 => 访问登录 => 拦截去首页
        return <Navigate to="/"/>
      } else {
        // 已登录 => 访问非登录页面 => 允许访问
        return <Comp></Comp>
      }
    } else {
      // 未登录
      if (pathname === "/login") {
        // 未登录 => 访问登录 => 允许访问
         return <Comp></Comp>
      } else {
        // 未登录 => 访问非登录页面 => 拦截去登录页面
         return <Navigate to="/login"/>
      }
    }

    return <Comp />;
  };
};

export default withLogin;
